package com.hongyun.tms.service;

import com.hongyun.tms.common.PageResponseDto;
import com.hongyun.tms.common.dto.dict.DictItemResponseDTO;
import com.hongyun.tms.common.dto.dict.MDictDataDTO;
import com.hongyun.tms.common.dto.dict.MDictTypeDTO;
import com.hongyun.tms.common.dto.dict.MDictTypeSearchDTO;
import com.hongyun.tms.common.page.PageParameter;

import java.util.List;

/**
 * @author 孙琦
 * @Description 字典及字典类型操作service类
 * @date 2023-4-26 16:57:35
 */
public interface MDictService {


    /**
     * 查询全部字典类型
     *
     * @param mDictTypeSearchDTO
     * @return
     */
    PageResponseDto<MDictTypeDTO> getDictTypeList(MDictTypeSearchDTO mDictTypeSearchDTO);


    /**
     * 新增、修改字典类型
     *
     * @param po
     */
    void insertOrUpdateDictType(MDictTypeDTO po);

    /**
     * 删除字典类型
     *
     * @param id
     */
    void deleteDictTypeById(Long id);

    /**
     * 新增、修改字典
     *
     * @param po
     */
    void insertOrUpdateDict(MDictDataDTO po);

    /**
     * 根据类型查询 字典
     *
     * @param pageParameter
     * @param typeCd
     * @return
     */
    PageResponseDto<MDictDataDTO> getDictListByType(PageParameter pageParameter, String typeCd);

    /**
     * 删除字典
     *
     * @param id
     */
    void deleteDictById(Long id);

    /**
     * 查询全部字典
     *
     * @param pageParameter
     * @param po
     * @return
     */
    PageResponseDto<MDictDataDTO> getDictList(PageParameter pageParameter, MDictDataDTO po);

//    /**
//     * 修改字典
//     * @param po
//     */
//    void updateDict(DictPO po);


//    /**
//     * 修改字典类型
//     * @param po
//     */
//    void updateDictType(DictTypePO po);


    /**
     * 根据id 查询字典
     *
     * @param id
     * @return
     */
    MDictDataDTO getDictById(Long id);


    /**
     * 根据ID查询字典类型
     *
     * @param id
     * @return
     */
    MDictTypeDTO getDictTypeById(Long id);

    /**
     * 根据type返回字典项列表
     *
     * @param dictType type
     * @return list
     */
    List<DictItemResponseDTO> dictItemListByType(String dictType);

    /**
     * 根据type和value的值返回对应的文本
     *
     * @param typeCode  DictType
     * @param dictValue DictValue
     * @return label
     */
    String getDictLabel(String typeCode, String dictValue);
}
